import axios from 'axios'
import { userInfoStore, usePlayListStore } from '../store'
import moment from 'moment';


export const baseURL = 'http://localhost:1111'  // 本地服务器地址
// export const baseURL = 'http://192.168.0.2:1111'  // 内网服务器地址
// export const baseURL = 'http://sakura-gy.qicp.vip:1111'  // 外网服务器地址

export const service = axios.create({
    baseURL: baseURL, // 所有的请求地址前缀部分
    timeout: 60000, // 请求超时时间毫秒
    headers: {
        'Content-Type': "application/json; charset=utf-8"
    },
    withCredentials: true //跨域携带cookies
})

// 添加请求拦截器
service.interceptors.request.use(function (config) {
    const userInfo = userInfoStore()
    config.headers.Authorization = userInfo.token
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
service.interceptors.response.use(function (response) {

    // 对响应数据做点什么
    return response;


}, function (error) {

    const userInfo = userInfoStore()
    const usePlayList = usePlayListStore()

    console.log(error)

    if (error.response) {   // 对响应错误做点什么

        if (error.response.status == 401) {
            window.$message.error('身份验证未通过。')
        } else if (error.response.status == 402) {
            window.$message.error('用户不存在或密码错误。')
        } else if (error.response.status == 405) {
            window.$router.push({ name: 'registerOrLogin' })
            userInfo.clearUserInfo()
            usePlayList.resetLikePlayList()
            window.$message.error('检测到未登录，禁止使用此功能')
        } else if (error.response.status == 403) {
            window.$router.push({ name: 'registerOrLogin' })
            userInfo.clearUserInfo()
            usePlayList.resetLikePlayList()
            window.$message.error('身份验证过期，请重新登录。')
        } else if (error.response.status == 406) {
            window.$router.push({ name: 'registerOrLogin' })
            userInfo.clearUserInfo()
            usePlayList.resetLikePlayList()
            window.$message.error('该账号已被封禁。')
        } else if (error.response.status == 408) {
            window.$router.push({ name: 'registerOrLogin' })
            userInfo.clearUserInfo()
            usePlayList.resetLikePlayList()
            window.$message.error(`该账号封禁中。到期日：${moment(error.response.data.data).format('YYYY-MM-DD HH:mm:ss')}`)
        } else if (error.response.status == 422) {
            window.$message.error('服务器无法响应。')
        } else if (error.response.status == 500) {
            window.$message.error('服务器内部错误。')
        } else if (error.response.status == 503) {
            window.$message.error('服务器目前无法使用。')
        }

        return Promise.resolve(error.response);

    } else { // 没有网络的环境下

        window.$message.error('当前网络不通畅，请查看网络连接状态')
        return Promise.resolve({ data: { code: 1, message: '当前网络不通畅，请查看网络连接状态' } });

    }

});

